package net.slique.sf5.model.silverware;

/**
 * Interface to computational models.
 * 
 * @author Vikrum
 *
 */
public interface ComputationalModel {
	
	/**
	 * Do any pre-solve checks.  Response has continuation information and message.
	 * 
	 * @return
	 */
	public OkPredicateResponse preSolve();
	
	/**
	 * Solve the model.
	 * 
	 * @return
	 */
	public SolutionResponse solve();
	
	/**
	 * Return any post-solve reports.
	 * 
	 * @return
	 */
	public OkPredicateResponse postSolve();
		
	/**
	 * Description of the model.
	 * 
	 * @return
	 */
	public ModelInformation getInformation();

}
